package com.hanamaki.unittest.testng.demo05;

import com.hanamaki.oop.demo10.A;
import com.hanamaki.unittest.junit.parameterize.util.FileUtil;
import com.hanamaki.unittest.testng.demo01.Calc;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

/**
 * 1. 不需要 类变量 不需要 迭代运行  不需要 构造方法
 * 1. 设置数据源 通过 注解 @DataProvider 数据源的返回值一定是一个 二维数组
 * 2. 可以定义多个数据源  想要使用哪一个  就在测试方法上 加上@Test(dataProvider = "数据源的方法名")
 * 3. 如果数据 是从 【数据库、文件中】读取出来 方法 必须使用 String类型的参数来接受
 */
public class ParamTest {

    static Calc calc;

    @BeforeClass
    public void setUp() {
        calc = new Calc();
    }

    @Test(dataProvider = "dp2")
    public void t1(String a,String b,String ex) {
        int a1 = Integer.parseInt(a);
        int b1 = Integer.parseInt(b);
        int exp1 = Integer.parseInt(ex);
        int less = calc.less(a1, b1);
        Assert.assertEquals(less, exp1);
    }

    //    编写 数据源   可以直接 给  测试方法
//     返回值 一定是二维数组
    @DataProvider
    public Object[][] dp1() {
        return new Object[][]{
                new Object[]{1, 2, 3},
                new Object[]{2, 2, 0},
                new Object[]{3, 2, 3},
                new Object[]{4, 2, 3}
        };
    }

    @DataProvider
    public Object[][] dp2() {
        return FileUtil.getFileContent("src/com/hanamaki/unittest/junit/parameterize/fileContent.txt");
    }



}
